home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
intuisup.lha
/
Intuisup
/
Library
/
M2AmigaModula
/
intuisupD.def
< prev
next >
Wrap
Text File
|
1992-08-14
|
20KB
|
478 lines
(* ------------------------------------------------------------------------
:Program. intuisup
:Contents. Interface to Torsten Jürgeleits intuisup.library
:Author. Johann Semsrott
:Address. Märkerweg 50 d
:Address. D-2000 Hamburg 61 (Germany)
:History. v4.5 14-aug-92 (translated from C)
:Copyright. 1991 by Torsten Jürgeleit
:Language. Modula-2
:Translator. M2Amiga V4.0d
:Remark. Thanks to Torsten for his great library
:Bugs. ?
------------------------------------------------------------------------ *)
DEFINITION MODULE intuisupD {"intuisup.library",4};
(*$ Implementation:=FALSE *)
FROM Arts IMPORT BreakPoint,Assert;
FROM SYSTEM IMPORT ADDRESS,CAST;
FROM IntuitionD IMPORT WindowPtr,NewWindowPtr,ScreenPtr,Image,ImagePtr,
IDCMPFlagSet,IDCMPFlags,GadgetPtr,Gadget,
MenuPtr,MenuItemPtr,IntuiMessagePtr;
FROM GraphicsD IMPORT TextFontPtr,TextAttr,TextAttrPtr;
FROM ExecD IMPORT MinList,MinNode,MsgPortPtr;
FROM DiskFontD IMPORT AvailFontHeader,AvailFontHeaderPtr;
FROM DosD IMPORT FileHandlePtr;
CONST
isupname = "intuisup.library";
iversion = 4; (* Current library version *)
dtText =1; dtInt =2; dtCard =3; dtHex =4; dtBin=5;
Box1Out =1; Box1In=2; Box2Out =3; Box2In=4;
mdTitle =1; mdItem=2; mdSubitem=3;
tfstNormal=0; tfstEOF=1;
errNoFileData =-1; errLineTooLong=-2;
errNoCommentEnd=-3; errReadFailed =-4;
Button =1; (* button gadget *)
Check =2; (* checkbox gadget *)
MX =3; (* mutual exclude gadget *)
String =4; (* string input gadget *)
Integer =5; (* integer input gadget *)
Slider =6; (* slider gadget *)
Scroller=7; (* scroller gadget *)
Cycle =8; (* cycle gadget *)
Count =9; (* count gadget *)
Listview=10; (* list view gadget *)
Palette =11; (* palette gadget *)
button =IDCMPFlagSet{gadgetUp,vanillaKey};
check =IDCMPFlagSet{gadgetDown,vanillaKey};
mx =IDCMPFlagSet{gadgetDown,vanillaKey};
string =IDCMPFlagSet{gadgetUp,vanillaKey};
integer =IDCMPFlagSet{gadgetUp,vanillaKey};
slider =IDCMPFlagSet{gadgetUp,mouseMove,vanillaKey};
scroller=IDCMPFlagSet{gadgetDown,gadgetUp,mouseMove,intuiTicks,vanillaKey};
cycle =IDCMPFlagSet{gadgetUp,vanillaKey};
count =IDCMPFlagSet{gadgetDown,gadgetUp,mouseMove,vanillaKey};
listview=IDCMPFlagSet{gadgetDown,gadgetUp,mouseMove,intuiTicks,vanillaKey};
palette =IDCMPFlagSet{gadgetUp,vanillaKey};
all =IDCMPFlagSet{gadgetDown,gadgetUp,mouseMove,intuiTicks,vanillaKey};
ISUP =CAST(IDCMPFlagSet,49535550H);
curValue=80000000H;
(************** S T R U C T U R E S *************************************)
TYPE
StrPtr=POINTER TO ARRAY [0..255] OF CHAR;
RenderInfoFlags=(
innerWindow,(* use upper left corner of inner window as location (0,0) *)
backFill, (* fill window back ground with different color *)
availFonts, (* scan available fonts and use this list for
ask_font/ open_font *)
f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15);
RenderInfoFlagSet=SET OF RenderInfoFlags;
RWindowFlags=(
centerWindow, (* center window on screen *)
renderPens, (* use render pens for detail and backfill pen *)
centerMouse, (* center window over current position of mouse pointer*)
w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,w13,w14,w15);
RWindowFlagSet=SET OF RWindowFlags;
ClrWindowFlags=(
customDrawMode, (* don't change draw mode *)
customColor, (* don't change background color *)
normalColor, (* use normal background color *)
useRaster, (* use standard raster for window background *)
absolutePos, (* don't add window border offset to given upper left
position *)
text1Color, (* use text color 1 *)
text2Color, (* use text color 2 *)
cw7,cw8,cw9,cw10,cw11,cw12,cw13,cw14,cw15);
ClrWindowFlagSet=SET OF ClrWindowFlags;
RenderInfoPtr=POINTER TO RenderInfo;
RenderInfo=RECORD
ID :LONGINT;
ScreenWidth,ScreenHeight :INTEGER;
ScreenDepth,WindowBorderTop,
WindowBorderLeft,WindowBorderRight,
WindowBorderBottom,HighlightPen,ShadowPen,
TextPen1,TextPen2,BackPen :SHORTCARD;
flags :RenderInfoFlagSet;
imageDataSize :LONGCARD;
imageData :ADDRESS;
AvailFontsHeader :AvailFontHeaderPtr;
textFont :TextFontPtr;
textAttr :TextAttr;
image :ARRAY [0..10] OF Image;
END;
TextDataFlags=(
Bold,Italic,Underlined,
AbsolutePos, (* absolute text pos given - don't add border offsets *)
Center, (* center text with in window width *)
PlaceLeft, (* place text left of given left edge *)
Color2, (* use 2nd text render pen *)
Complement, (* use complement of front and back pen *)
Backfill, (* use draw mode JAM2 to fill text background with
ri_BackPen *)
NoPrint, (* don't print text - only calc width *)
NumIdentifier, (* convert number with normal (assembler style) leading
identifier `$' or `%' *)
NumC, (* use C style identifier `0x' for hex numbers *)
NumLeading, (* convert number including leading zeroes *)
NumUpper, (* use upper case characters for hex number *)
td14,td15);
TextDataFlagSet=SET OF TextDataFlags;
TextDataPtr=POINTER TO TextData;
TextData=RECORD
type :INTEGER;
flags :TextDataFlagSet;
leftEdge,topEdge :INTEGER;
text :ADDRESS;
textAttr :TextAttrPtr;
END;
ConvertFlags=(
identifier, (* convert number with normal (assmebler style)
leading identifier `$' or `%' *)
cStyle, (* use C style identifier `0x' for hex numbers *)
leadingZeros, (* convert number includeing leading zeroes *)
upperCase, (* use upper case characters for hex number *)
cf4,cf5,cf6,cf7,cf8,cf9,cf10,cf11,cf12,cf13,cf14,cf15);
ConvertFlagSet=SET OF ConvertFlags;
BorderDataPtr=POINTER TO BorderData;
BorderData=RECORD
bdType,bdLeftEdge,bdTopEdge,bdWidth,bdHeight:INTEGER;
END;
GadgetDataFlags=(
disabled, (* gadget disabled (ghosted) - default enabled *)
noBorder, (* no gadget border - default with border *)
highComp, (* highliting by complement - default by select border *)
vertOrient, (* vertical orientation - default horizontal *)
hotKey, (* hot key given - default none *)
noText, (* no text output, but scan gadget text for hotkey *)
textLeft, (* place text left of gadget *)
textRight, (* place text right of gadget *)
textAbove, (* place text above of gadget *)
textBelow, (* place text below of gadget *)
gdcolor2, (* use 2nd text render pen for gadget text *)
buttonToggle, (* button gadgets: toggle button - default no toggle *)
buttonImage, (* button gadgets: render image - default no image *)
autoActivate, (* input gadgets: acivate after GADGETUP next or previous
input gadget *)
unsignDec, (* string gadgets: input default no pointer to string
but an unsigned decimal number *)
signDec, (* string gadgets: input default no pointer to string
but an signed decimal number *)
hex, (* string gadgets: input default no pointer to string
but an hex number *)
bin, (* string gadgets: input default no pointer to string
but an binary number *)
noArrows, (* scroller gadget: no arrows - default with arrows *)
countSignDec, (* count gadget: signed dec - default unsigned dec *)
readOnly, (* list view gadget: read only - default selection
enabled *)
showSelected, (* list view gadget: show last selected entry -
default no *)
noIndicator, (* palette gadget: no current color indicator -
default with indicator *)
indicatorTop, (* palette gadget: place indicator at top -
default at left *)
movePointer, (* move mouse pointer to center of this gadget *)
noClear, (* don't clear area occupied by this gadget before
drawing *)
sliderImage, (* kludge to define image for knob of proportional
gadget in gd_TextAttr (if text then default
TextAttr used) *)
listViewColor, (* list view gadget: if first char of an entry text
equals <Ctrl A> ($01) then this char will be skipped
and the rest of this entry text will be printed in a
different color *)
inputCenter, (* input gadgets: center input string within gadget *)
inputRight, (* input gadgets: right justify input string within
gadget *)
gd30,gd31);
GadgetDataFlagSet=SET OF GadgetDataFlags;
GadgetDataPtr=POINTER TO GadgetData;
GadgetData=RECORD
gdType :LONGINT;
gdFlags :GadgetDataFlagSet;
gdLeftEdge,gdTopEdge,gdWidth,gdHeight :INTEGER;
gdText :ADDRESS;
gdTextAttr :TextAttrPtr;
CASE :INTEGER OF
(* standard data struct *)
|1:gdData1,gdData2,gdData3:LONGINT;
(* for button gadgets *)
|2:gdButtonSelected :LONGINT; (* selection state for toggle
buttons - ZERO = unselected, non ZERO = selected *)
gdButtonNormalRender :ImagePtr; (* normal render image *)
gdButtonSelectRender :ImagePtr; (* select render image *)
(* for check gadgets *)
|3:gdCheckSelected :LONGINT; (* selection state -
ZERO = unselected, non ZERO = selected *)
gdCheckPad1,gdCheckPad2:LONGINT;
(* for mutual exclude gadgets *)
|4:gdMXSpacing :LONGINT; (* pixel spacing between MX gadgets *)
gdMXActiveEntry:LONGINT; (* num of active entry from text array *)
gdMXTextArray :ADDRESS; (* ptr to MX text ptr array *)
(* for string and integer gadgets *)
|5:gdInputLen :LONGINT; (* len of input buffer *)
gdInputActivateNext :INTEGER; (* num of next string/num
gadget to activate *)
gdInputActivatePrev :INTEGER; (* num of previous string/num
gadget to activate *)
gdInputDefault :ADDRESS;
(* string: default text [syntax: "text"] *)
(* integer: default number [syntax: (VOID #)num] *)
(* for slider gadgets *)
|6:gdSliderMin :LONGINT; (* min level *)
gdSliderMax :LONGINT; (* max level *)
gdSliderLevel :LONGINT; (* current slider level *)
(* for scroller gadgets *)
|7:gdScrollerVisible :LONGINT; (* visible entries *)
gdScrollerTotal :LONGINT; (* total entries *)
gdScrollerTop :LONGINT; (* current top entry *)
(* for cycle gadget *)
|8:gdCyclePad :LONGINT;
gdCycleActive :LONGINT; (* num of current cycle text ptr
array entry *)
gdCycleTextArray :ADDRESS; (* ptr to cycle text ptr array *)
(* for count gadget *)
|9:gdCountMin :LONGINT; (* min value *)
gdCountMax :LONGINT; (* max value *)
gdCountValue :LONGINT; (* current count value *)
(* for list view gadget *)
|10:gdListViewSpacing :LONGINT; (* pixel spacing between
list view entries *)
gdListViewTop :LONGINT; (* current top entry *)
gdListViewList :ADDRESS; (* current list ptr *)
(* for palette gadget *)
|11:gdPaletteDepth :LONGINT; (* num of bitplanes for palette *)
gdPaletteColorOffset :LONGINT; (* first color of palette *)
gdPaletteActiveColor :LONGINT; (* selected color *)
END;
END;
ExtendedGadgetFlags=
(eghotkey,egrenderBorder,egRenderImage,egnormalImageCopy,
egselectImageCopy,egcloseFont,egmovePointer,
eg7,eg8,eg9,eg10,eg11,eg12,eg13,eg14,eg15);
ExtendedGadgetFlagSet=SET OF ExtendedGadgetFlags;
GadgetListPtr=POINTER TO GadgetList;
ExtendedGadgetPtr=POINTER TO ExtendedGadget;
ExtendedGadget=RECORD
egGadget :Gadget;
egBorderWidth :INTEGER; (* needed by editor *)
egBorderHeight :INTEGER; (* needed by editor *)
egType :SHORTINT; (* internal gadget type *)
egFlags :SHORTINT; (* special flags, e.g render object type *)
egDataEntry :INTEGER; (* ordinal number of entry in gl_Data array *)
egGadgetList :GadgetListPtr;
egTextLeftEdge :INTEGER;
egTextTopEdge :INTEGER;
egText :StrPtr;
egTextAttr :TextAttrPtr;
egTextFont :TextFontPtr;
egHotkey :INTEGER; (* ASCII value of gadget hot key *)
egHotkeyPos :INTEGER; (* pos of as hot key marked
(underscore) char in gadget text *)
egRender :ADDRESS; (* ptr to image or border -
determined by eg_Flags *)
egNextGadget :ExtendedGadgetPtr;
END;
GadgetListFlags=(
displayed, (* gadget list currently displayed *)
gl1,gl2,gl3,gl4,gl5,gl6,gl7);
GadgetListFlagSet=SET OF GadgetListFlags;
RequesterListPtr=POINTER TO RequesterList;
GadgetList=RECORD
glMinNode :MinNode; (* node to insert GadgetList into
VisibleGadgetLists list *)
glRenderInfo :RenderInfoPtr;
glWindow :WindowPtr;
glData :GadgetDataPtr;
glID :LONGINT;
glDataEntries :INTEGER;
glFlags :GadgetListFlagSet;
glAutoRepeatDelay :SHORTCARD; (* delay counter for start of
auto repeat for active arrow gadget *)
glGadgetBuffer :ADDRESS;
glGadgetBufferSize :LONGINT;
glImageBuffer :ADDRESS;
glImageBufferSize :LONGINT;
glLanguageTextArray :ADDRESS;
glRequesterList :RequesterListPtr;
glActiveGadget :ExtendedGadgetPtr;
glGadgets :ExtendedGadgetPtr;
(* array with gl_DataEntries ptr to extended gadgets *)
END;
AutoRequesterFlags=(
rbackFill,rrenderPens,rtextCenter,rtextColor2,
rhotkey,rbeep,rmovePointerPos,rmovePointerNeg,
rdrawRaster, (* draw raster around text area *)
rcenterMouse, (* center last gadget of auto requester over
current position of mouse pointer *)
r10,r11,r12,r13,r14,r15);
AutoRequesterFlagSet=SET OF AutoRequesterFlags;
RequesterDataFlags=(
rdbackFill,rdrenderPens,rdinnerWindow,rdavailFonts,
rdcenter, (* center requester on window's screen *)
rddragGadget,rddepthGadget,
rddrawRaster, (* draw raster between FIRST BORDER and window
border - FIRST BORDER will not be used further *)
rdcenterWindow, (* center requester on window *)
rdcenterMouse, (* center requester over current position of
mouse pointer *)
rd10,rd11,rd12,rd13,rd14,rd15,
rd16,rd17,rd18,rd19,rd20,rd21,rd22,rd23,rd24,rd25,
rd26,rd27,rd28,rd29,rd30,rd31);
RequesterDataFlagSet=SET OF RequesterDataFlags;
RequesterList = RECORD
rlRenderInfo :RenderInfoPtr;
rlWindow :WindowPtr; (* window requester displayed on *)
rlReqWindow :WindowPtr; (* window of requester *)
rlGadgetList :GadgetListPtr; (* requester gadgets *)
rlMenu :MenuPtr; (* menu of window requester
displayed on *)
rlVisibleGadgetLists:MinList; (* list for removed visible
gadget lists *)
rlID :LONGINT; (* id = 'ISUP' *)
END;
RequesterDataPtr=POINTER TO RequesterData;
RequesterData = RECORD
rdLeftEdge,rdTopEdge,
rdWidth,rdHeight :INTEGER;
rdFlags :RequesterDataFlagSet;
rdTitle :ADDRESS;
rdTexts :TextDataPtr;
rdBorders :BorderDataPtr;
rdGadgets :GadgetDataPtr;
END;
MenuDataFlags=(
Disabled, (* disable menu or menu item *)
attribute, (* attribute menu item *)
selected, (* selected attribute menu item *)
emptyLine, (* insert empty line before this item *)
highNone, (* no highliting *)
highBox, (* highliting with box, otherwise with complement *)
mdColor2, (* alternate color for item text *)
md7,md8,md9,md10,md11,md12,md13,md14,md15);
MenuDataFlagSet=SET OF MenuDataFlags;
MenuListFlags=(
attached, (* menu list is currently attached to a window *)
ml1,ml2,ml3,ml4,ml5,ml6,ml7,ml8,ml9,ml10,ml11,ml12,ml13,ml14,ml15);
MenuListFlagSet=SET OF MenuListFlags;
MenuData=RECORD
mdType :INTEGER;
mdFlags :MenuDataFlagSet;
mdText :StrPtr;
mdCommandKey :ADDRESS;
mdMutualExclude :LONGCARD;
END;
MenuDataPtr=POINTER TO MenuData;
MenuList=RECORD
mlRenderInfo :RenderInfoPtr;
mlWindow :WindowPtr;
mlTextAttr :TextAttrPtr;
mlTextFont :TextFontPtr;
mlData :MenuDataPtr;
mlID :LONGINT;
mlFlags :MenuListFlagSet;
mlTextPen1,mlTextPen2 :SHORTCARD;
mlLanguageTextArray :ADDRESS;
mlBuffer :ADDRESS;
mlBufferSize :LONGCARD;
END;
MenuListPtr=POINTER TO MenuList;
TextFileFlags =(
trimLine, (* strip leading and trailing white space *)
skipComments, (* skip C style comments *)
skipEmptyLines, (* skip empty lines *)
lineContinuation, (* continue line with last character
'\' in next line *)
tf4,tf5,tf6,tf7,tf8,tf9,tf10,tf11,tf12,tf13,tf14,tf15);
TextFileFlagSet=SET OF TextFileFlags;
FileDataPtr=POINTER TO FileData;
FileData = RECORD
fdLine :ADDRESS;
fdLineLen,fdLineNum :CARDINAL;
END;
PointerDataPtr=POINTER TO PointerData;
PointerData = RECORD
pdWidth,pdHeight :SHORTCARD;
pdXOffset,pdYOffset :SHORTINT;
pdData :ADDRESS;
END;
PointerListPtr=POINTER TO PointerList;
PointerList = RECORD
plID :LONGINT; (* id = 'ISUP' *)
plWidth,plHeight :SHORTCARD;
plXOffset,plYOffset :SHORTINT;
plData :ADDRESS;
plBuffer :ADDRESS; (* if non NULL then chipmem buffer
was allocated *)
plBufferSize :LONGINT;
plNext :PointerListPtr;
END;
END intuisupD.